package com.eshore.norm.pattern.bridge;



/**
 * 桥接模式
 * 实现了抽象和实现部分的分离，从而极大的提高了系统的灵活性，让抽象部分和实现部分独立开来，这有助于系统进行分层设计，从而产生更好的结构化系统.
 * 分离之后代码的扩展性更强，当想要增加功能时，只需要在“类的功能层次结构”一侧增加类即可，不必对“类的实现层次结构”做任何修改。而且，增加后的功能可以被“所有的实现”使用（例如，我们可以将“类的功能层次结构”应用于软件所运行的操作系统上。如果我们将某个程序中依赖于操作系统的部分划分为 Windows版、Macintosh 版、Unix 版，那么我们就可以用 Bridge模式中的“类的实现层次结构”来表现这些依赖于操作系统的部分。也就是说，我们需要编写一个定义这些操作系统的共同接口(API)的Implementor角色，然后编写Windows版、Macintosh版Unix版的3个Concretelmplementor角色。这样一来，无论在“类的功能层次结构”中增加多少个功能，它们都可以工作于这3个操作系统上。）
 * @author: v-chenjl62
 * @date: 2024/2/5 16:29
 */
public class Client {
    public static void main(String[] args) {
        VideoFile videoFile=new AVIFile();
        OperationSystem system = new Windows(videoFile);
        system.play("d:/good.avi");

        System.out.println("==================");
        system = new Mac(videoFile);
        system.play("d:/good.avi");


        System.out.println("==================");
        videoFile=new RMVFile();
        system = new Linux(videoFile);
        system.play("d:/xixi.rmv");
    }

}
